{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"improved-CNN.ipynb","version":"0.3.2","provenance":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"accelerator":"GPU"},"cells":[{"metadata":{"id":"eCJWP5yvdWRm","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":34},"outputId":"f58b0b1f-8add-4481-d3ca-00e1f9a29327","executionInfo":{"status":"ok","timestamp":1553930255850,"user_tz":-180,"elapsed":2270,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["import torch\n","import torch.nn as nn\n","import torchvision.transforms as transforms\n","import torchvision.datasets as datasets\n","from torch.autograd import Variable\n","torch.cuda.is_available()"],"execution_count":1,"outputs":[{"output_type":"execute_result","data":{"text/plain":["True"]},"metadata":{"tags":[]},"execution_count":1}]},{"metadata":{"id":"FHfNQpeAdkx2","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":255},"outputId":"68f2e4ff-e347-4460-dfa7-ae12f31a5576","executionInfo":{"status":"ok","timestamp":1553930648713,"user_tz":-180,"elapsed":2370,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["mean_gray= 0.1307\n","stddev_gray= 0.3081\n","#normalize the image with std and mean\n","#e.g: input[channel]=(input[channel]-mean[channel])/std(channel)\n","transforms = transforms.Compose([transforms.ToTensor(), transforms.Normalize((mean_gray,),(stddev_gray,))])\n","\n","train_dataset=datasets.MNIST(root='./data', train=True, transform=transforms, download=True)\n","test_dataset=datasets.MNIST(root='./data', train=False, transform=transforms)"],"execution_count":3,"outputs":[{"output_type":"stream","text":["  0%|          | 0/9912422 [00:00<?, ?it/s]"],"name":"stderr"},{"output_type":"stream","text":["Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ./data/MNIST/raw/train-images-idx3-ubyte.gz\n"],"name":"stdout"},{"output_type":"stream","text":["9920512it [00:00, 20462403.72it/s]                            \n"],"name":"stderr"},{"output_type":"stream","text":["Extracting ./data/MNIST/raw/train-images-idx3-ubyte.gz\n"],"name":"stdout"},{"output_type":"stream","text":["32768it [00:00, 333421.36it/s]\n","0it [00:00, ?it/s]"],"name":"stderr"},{"output_type":"stream","text":["Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to ./data/MNIST/raw/train-labels-idx1-ubyte.gz\n","Extracting ./data/MNIST/raw/train-labels-idx1-ubyte.gz\n","Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to ./data/MNIST/raw/t10k-images-idx3-ubyte.gz\n"],"name":"stdout"},{"output_type":"stream","text":["1654784it [00:00, 5114397.60it/s]                           \n","8192it [00:00, 131788.39it/s]\n"],"name":"stderr"},{"output_type":"stream","text":["Extracting ./data/MNIST/raw/t10k-images-idx3-ubyte.gz\n","Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to ./data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n","Extracting ./data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n","Processing...\n","Done!\n"],"name":"stdout"}]},{"metadata":{"id":"27TyR0YVfAXL","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":381},"outputId":"96461f46-ce66-4f0a-c259-1e81510ae587","executionInfo":{"status":"ok","timestamp":1553931075283,"user_tz":-180,"elapsed":726,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["import matplotlib.pyplot as plt\n","label=train_dataset[21][1]\n","print('label:', label)\n","random_image = train_dataset[21][0].numpy() * stddev_gray + mean_gray\n","plt.imshow(random_image.reshape(28,28), cmap='gray')"],"execution_count":18,"outputs":[{"output_type":"stream","text":["label: 0\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/plain":["<matplotlib.image.AxesImage at 0x7ff435f83588>"]},"metadata":{"tags":[]},"execution_count":18},{"output_type":"display_data","data":{"image/png":"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\nUyVJ06ZNU2VlpcNVRa+9vV1PPfWUVq5cqWXLlum3337Thg0bdOHCBU2cOFHbt29XZmam02VG5N89\nbdy4UYcPH1ZOTo4k6bHHHtPcuXOdLTJC1dXVOnjwoAYGBrRq1SoVFha6fj9Jw/v68ssvHd9XSQ/L\nAwcOqKOjQ36/X8ePH1dFRYX8fn+yy0iIoqIi1dTUOF1GzM6dO6ctW7aouLh4cKympkbl5eVauHCh\nXnrpJTU2Nqq8vNzBKiMTqidJWrdunUpLSx2qKjb79+/X0aNH5ff71dvbqyVLlqi4uNjV+0kK3dft\nt9/u+L5K+svwlpYWlZWVSZJuuukmnT59WmfPnk12GRhBZmam6urqlJ+fPzjW2tqq+fPnS5JKS0vV\n0tLiVHlRCdWT282cOVOvvvqqJGnChAnq6+tz/X6SQvd14cIFh6tyICx7enp05ZVXDt7Ozc1Vd3d3\nsstIiGPHjunJJ5/UQw89pH379jldTtS8Xq/Gjh07ZKyvr2/w5VxeXp7r9lmoniSpoaFBK1as0LPP\nPqs//vjDgcqil5GRoaysLElSY2OjZs+e7fr9JIXuKyMjw/F95cg5y0uly2rLG264QU8//bQWLlyo\nzs5OrVixQs3Nza48XzSadNlnixYtUk5OjgoKCrRr1y69/vrr2rx5s9NlRWzPnj1qbGzU7t27tWDB\ngsFxt++nS/sKBAKO76ukH1nm5+erp6dn8PbJkyc1ceLEZJcRd5MmTdJdd90lj8ej6667TldddZW6\nurqcLitusrKy1N/fL0nq6upKi5ezxcXFKigokCTNmzdP7e3tDlcUub1792rnzp2qq6vT+PHj02Y/\n/buvVNhXSQ/LO+64Q01NTZKkw4cPKz8/X9nZ2ckuI+4+/fRTvf3225Kk7u5unTp1SpMmTXK4qvgp\nKSkZ3G/Nzc2aNWuWwxXFbvXq1ers7JT0zznZ/7+TwS3OnDmj6upq1dbWDl4lTof9FKqvVNhXjnzq\n0I4dO/TDDz/I4/Ho+eef1/Tp05NdQtydPXtW69ev159//qnz58/r6aef1pw5c5wuKyqBQEDbtm3T\niRMn5PV6NWnSJO3YsUMbN27UX3/9pcmTJ2vr1q267LLLnC7VLFRPy5Yt065duzRu3DhlZWVp69at\nysvLc7pUM7/fr9dee0033njj4NiLL76oTZs2uXY/SaH7uu+++9TQ0ODovuIj2gDAgBU8AGBAWAKA\nAWEJAAaEJQAYEJYAYEBYAoABYQkABoQlABj8DzE8D4uEWdEJAAAAAElFTkSuQmCC\n","text/plain":["<Figure size 576x396 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"B-6WqafRgqJb","colab_type":"code","colab":{}},"cell_type":"code","source":["batch_size=100\n","epochs=10\n","train_load=torch.utils.data.DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)\n","test_load=torch.utils.data.DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=False)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"KSckW16Sg-k4","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":85},"outputId":"cf83b6fa-f9bf-4b6c-d1b5-d69ae85508a5","executionInfo":{"status":"ok","timestamp":1553931170430,"user_tz":-180,"elapsed":703,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["print(\"Number of images in training set: {}\".format(len(train_dataset)))\n","print(\"Number of images in test set: {}\".format(len(test_dataset)))\n","print(\"Number of batches in the train loader: {}\".format(len(train_load)))\n","print(\"Number of batches in the test loader: {}\".format(len(test_load)))"],"execution_count":20,"outputs":[{"output_type":"stream","text":["Number of images in training set: 60000\n","Number of images in test set: 10000\n","Number of batches in the train loader: 600\n","Number of batches in the test loader: 100\n"],"name":"stdout"}]},{"metadata":{"id":"wxZyoq64hj-K","colab_type":"code","colab":{}},"cell_type":"code","source":["class CNN(nn.Module):\n","  def __init__(self):\n","    super(CNN,self).__init__()\n","    # input_size:28, same_padding=(filter_size-1)/2, 3-1/2=1:padding\n","    self.cnn1=nn.Conv2d(in_channels=1, out_channels=8, kernel_size=3, stride=1, padding=1)\n","    # input_size-filter_size +2(padding)/stride + 1 = 28-3+2(1)/1+1=28\n","    self.batchnorm1=nn.BatchNorm2d(8)\n","    # output_channel:8, batch(8)\n","    self.relu=nn.ReLU()\n","    self.maxpool1=nn.MaxPool2d(kernel_size=2)\n","    #input_size=28/2=14\n","    self.cnn2=nn.Conv2d(in_channels=8, out_channels=32, kernel_size=5, stride=1, padding=2)\n","    # same_padding: (5-1)/2=2:padding_size. \n","    self.batchnorm2=nn.BatchNorm2d(32)\n","    self.maxpool2=nn.MaxPool2d(kernel_size=2)\n","    # input_size=14/2=7\n","    # 32x7x7=1568\n","    self.fc1 =nn.Linear(in_features=1568, out_features=600)\n","    self.dropout= nn.Dropout(p=0.5)\n","    self.fc2 =nn.Linear(in_features=600, out_features=10)\n","  def forward(self,x):\n","    out =self.cnn1(x)\n","    out =self.batchnorm1(out)\n","    out =self.relu(out)\n","    out =self.maxpool1(out)\n","    out =self.cnn2(out)\n","    out =self.batchnorm2(out)\n","    out =self.relu(out)\n","    out =self.maxpool2(out)\n","    out =out.view(-1,1568)\n","    out =self.fc1(out)\n","    out =self.relu(out)\n","    out =self.dropout(out)\n","    out =self.fc2(out)\n","    return out"],"execution_count":0,"outputs":[]},{"metadata":{"id":"EeKLzw2zhlTi","colab_type":"code","colab":{}},"cell_type":"code","source":["model=CNN()\n","CUDA=torch.cuda.is_available()\n","if CUDA:\n","  model=model.cuda()\n","loss_fn=nn.CrossEntropyLoss()\n","optimizer=torch.optim.Adadelta(model.parameters(), lr=0.01)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"HHswfa1Hhx6r","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":221},"outputId":"ca22203b-c63f-480b-c1d1-7bac7bbad852","executionInfo":{"status":"ok","timestamp":1553936623877,"user_tz":-180,"elapsed":714,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["iteration=0\n","correct_nodata=0\n","correct_data=0\n","for i,(inputs,labels) in enumerate (train_load):\n","  if iteration==1:\n","    break\n","  inputs=Variable(inputs)\n","  labels=Variable(labels)\n","  if torch.cuda.is_available():\n","    inputs=inputs.cuda()\n","    labels=labels.cuda()\n","  print(\"For 1 iteration, this is what happens:\")\n","  print(\"Input Shape:\",inputs.shape)\n","  print(\"Labels Shape:\", labels.shape)\n","  output = model(inputs)\n","  print(\"Output Shape:\",output.shape)\n","  _,predicted_nodata=torch.max(output,1)\n","  print(\"Predicted Shape:\",predicted_nodata.shape)\n","  print(\"Predicted Tensor:\",predicted_nodata)\n","  correct_nodata +=(predicted_nodata==labels).sum()\n","  print(\"Correct Predictions:\",correct_nodata)\n","  _,predicted_data = torch.max(output.data,1)\n","  correct_data +=(predicted_data==labels.data).sum()\n","  print(\"Correct Predictions:\",correct_data)\n","  \n","  iteration+=1"],"execution_count":27,"outputs":[{"output_type":"stream","text":["For 1 iteration, this is what happens:\n","Input Shape: torch.Size([100, 1, 28, 28])\n","Labels Shape: torch.Size([100])\n","Output Shape: torch.Size([100, 10])\n","Predicted Shape: torch.Size([100])\n","Predicted Tensor: tensor([4, 9, 5, 0, 9, 3, 9, 3, 3, 7, 6, 1, 9, 4, 9, 3, 9, 7, 2, 2, 9, 1, 9, 2,\n","        2, 9, 1, 9, 9, 0, 3, 0, 2, 3, 0, 4, 5, 6, 0, 0, 4, 7, 3, 2, 7, 9, 2, 3,\n","        0, 2, 9, 0, 4, 9, 9, 9, 7, 3, 9, 6, 4, 9, 2, 0, 4, 2, 3, 9, 4, 2, 1, 0,\n","        4, 4, 2, 2, 2, 1, 2, 3, 0, 2, 4, 4, 0, 0, 4, 8, 9, 8, 4, 3, 3, 9, 4, 9,\n","        7, 5, 4, 0], device='cuda:0')\n","Correct Predictions: tensor(12, device='cuda:0')\n","Correct Predictions: tensor(12, device='cuda:0')\n"],"name":"stdout"}]},{"metadata":{"id":"_RXT8Kjt13Pt","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":442},"outputId":"b860ab11-56ee-4bde-ceff-31f76c811e74","executionInfo":{"status":"ok","timestamp":1553938948223,"user_tz":-180,"elapsed":465485,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["num_epochs=25\n","\n","train_loss=[]\n","test_loss=[]\n","train_accuracy=[]\n","test_accuracy=[]\n","\n","# Training\n","for epoch in range(num_epochs):\n","  # Reset variables at 0 epoch\n","  correct=0\n","  iteration=0\n","  iter_loss=0.0\n","  \n","  model.train() # Training Mode\n","  \n","  for i,(inputs,labels) in enumerate(train_load):\n","    \n","    inputs=Variable(inputs)\n","    labels=Variable(labels)\n","    \n","    # if CUDA is avaible, shift to GPU (CUDA)\n","    CUDA=torch.cuda.is_available()\n","    if CUDA:\n","      inputs=inputs.cuda()\n","      labels=labels.cuda()\n","      \n","    optimizer.zero_grad() # clear gradient\n","    outputs=model(inputs)\n","    loss=loss_fn(outputs,labels)\n","    iter_loss += loss.item() # Accumulate loss\n","    loss.backward() # backpropagation\n","    optimizer.step() # update weights\n","    \n","    # Save the correct predictions for training data\n","    _,predicted=torch.max(outputs,1)\n","    correct +=(predicted==labels).sum()\n","    iteration +=1\n","    \n","  train_loss.append(iter_loss/iteration)\n","  train_accuracy.append((100*correct/len(train_dataset)))\n","  \n","  # Testing\n","  correct=0\n","  iteration=0\n","  loss=0.0\n","  \n","  model.eval()  # Testing Mode\n","  \n","  for i, (inputs, labels) in enumerate(test_load):\n","    \n","    inputs=Variable(inputs)\n","    labels=Variable(labels)\n","    \n","    CUDA=torch.cuda.is_available()\n","    if CUDA:\n","      inputs=inputs.cuda()\n","      labels=labels.cuda()\n","    \n","    outputs=model(inputs)\n","    loss=loss_fn(outputs,labels)\n","    loss += loss.item()\n","    \n","    _,predicted=torch.max(outputs,1)\n","    correct+=(predicted==labels).sum()\n","    \n","    iteration+=1\n","    \n","  test_loss.append(loss/iteration)\n","  test_accuracy.append((100*correct/len(test_dataset)))\n","  \n","  print('Epoch {}/{}, Training Loss:{:.3f}, Training Accuracy:{:.3f}, Testing Loss {:.3f}, Testing Accuracy:{:.3f}'\n","       .format(epoch+1, num_epochs, train_loss[-1], train_accuracy[-1], test_loss[-1], test_accuracy[-1]))\n","  \n","    "],"execution_count":31,"outputs":[{"output_type":"stream","text":["Epoch 1/25, Training Loss:0.281, Training Accuracy:92.000, Testing Loss 0.006, Testing Accuracy:94.000\n","Epoch 2/25, Training Loss:0.215, Training Accuracy:94.000, Testing Loss 0.004, Testing Accuracy:95.000\n","Epoch 3/25, Training Loss:0.178, Training Accuracy:94.000, Testing Loss 0.003, Testing Accuracy:96.000\n","Epoch 4/25, Training Loss:0.153, Training Accuracy:95.000, Testing Loss 0.003, Testing Accuracy:96.000\n","Epoch 5/25, Training Loss:0.137, Training Accuracy:96.000, Testing Loss 0.002, Testing Accuracy:97.000\n","Epoch 6/25, Training Loss:0.124, Training Accuracy:96.000, Testing Loss 0.002, Testing Accuracy:97.000\n","Epoch 7/25, Training Loss:0.113, Training Accuracy:96.000, Testing Loss 0.002, Testing Accuracy:97.000\n","Epoch 8/25, Training Loss:0.105, Training Accuracy:96.000, Testing Loss 0.002, Testing Accuracy:97.000\n","Epoch 9/25, Training Loss:0.098, Training Accuracy:97.000, Testing Loss 0.002, Testing Accuracy:97.000\n","Epoch 10/25, Training Loss:0.092, Training Accuracy:97.000, Testing Loss 0.001, Testing Accuracy:97.000\n","Epoch 11/25, Training Loss:0.087, Training Accuracy:97.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 12/25, Training Loss:0.084, Training Accuracy:97.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 13/25, Training Loss:0.080, Training Accuracy:97.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 14/25, Training Loss:0.076, Training Accuracy:97.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 15/25, Training Loss:0.072, Training Accuracy:97.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 16/25, Training Loss:0.071, Training Accuracy:97.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 17/25, Training Loss:0.068, Training Accuracy:98.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 18/25, Training Loss:0.065, Training Accuracy:98.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 19/25, Training Loss:0.063, Training Accuracy:98.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 20/25, Training Loss:0.061, Training Accuracy:98.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 21/25, Training Loss:0.060, Training Accuracy:98.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 22/25, Training Loss:0.057, Training Accuracy:98.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 23/25, Training Loss:0.056, Training Accuracy:98.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 24/25, Training Loss:0.054, Training Accuracy:98.000, Testing Loss 0.001, Testing Accuracy:98.000\n","Epoch 25/25, Training Loss:0.054, Training Accuracy:98.000, Testing Loss 0.001, Testing Accuracy:98.000\n"],"name":"stdout"}]},{"metadata":{"id":"zLOlTAad_Cpx","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":592},"outputId":"5e7b865b-2ada-4f51-d5e8-2dc2ef171197","executionInfo":{"status":"ok","timestamp":1553939142993,"user_tz":-180,"elapsed":1091,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["# Loss\n","f=plt.figure(figsize=(10,10))\n","plt.plot(train_loss, label='Training Loss')\n","plt.plot(test_loss, label='Testing Loss')\n","plt.legend()\n","plt.show()"],"execution_count":32,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nww/19ttvS5K2bt2qrq4udXV1zTkGAACgVhj3Zr5UdQssxfQo07ArA+O0MjBOyx9jtDIwTitD5B8R\nAgAAYHEIWAAAABEjYAEAAESMgAUAABAxAhYAAEDECFgAAAARI2ABAABEjIAFAAAQMQIWAABAxAhY\nAAAAESNgAQAARIyABQAAEDECFgAAQMQIWAAAABEjYAEAAESMgAUAABAxAhYAAEDECFgAAAARI2AB\nAABEzLiu61a7EQAAAH8nzGABAABEjIAFAAAQMQIWAABAxAhYAAAAESNgAQAARIyABQAAELFYtRuw\nVHbv3q2TJ0/KGKO+vj6tX7++2k2Cz/Hjx/XGG2/onnvukSTde++9ev/996vcKvidPn1ar776ql58\n8UX19vbq4sWLevfdd5XP59XR0aHPPvtMiUSi2s2saZVjtHPnTg0ODqq1tVWS9NJLL+mxxx6rbiOh\nvXv36vfff1cul9PLL7+s+++/n2tpGaocpx9++GFR11NNBKwTJ07o/PnzSqfTOnfunPr6+pROp6vd\nLFR46KGHdODAgWo3AyGuXr2qjz76SN3d3V7ZgQMHtG3bNm3ZskX79+9Xf3+/tm3bVsVW1rawMZKk\nt956S5s2bapSq1Dp119/1ZkzZ5ROpzU+Pq5nn31W3d3dXEvLTNg4Pfzww4u6nmriI8KBgQFt3rxZ\nkrRmzRplMhlNTk5WuVXAypFIJHTo0CGlUimv7Pjx43riiSckSZs2bdLAwEC1mgeFjxGWnwcffFCf\nf/65JKm5uVnT09NcS8tQ2Djl8/lFnaMmAtbo6Kja2tq87fb2do2MjFSxRQhz9uxZvfLKK3rhhRf0\n888/V7s58InFYqqrqwuUTU9Pex9jrF69mmuqysLGSJKOHDmi7du3680339TY2FgVWgY/27bV0NAg\nServ79eGDRu4lpahsHGybXtR11NNfERYiX8daPm5++67tWPHDm3ZskVDQ0Pavn27jh07xvcQVgiu\nqeXpmWeeUWtrq9auXauDBw/qyy+/1AcffFDtZkHS999/r/7+fn3zzTd66qmnvHKupeXFP06nTp1a\n1PVUEzNYqVRKo6Oj3valS5fU0dFRxRahUmdnp7Zu3SpjjO666y7ddtttGh4ernazcB0NDQ26du2a\nJGl4eJiPppah7u5urV27VpL0+OOP6/Tp01VuESTpp59+0ldffaVDhw5p1apVXEvLVOU4LfZ6qomA\n1dPTo6NHj0qSBgcHlUql1NTUVOVWwe+7777T4cOHJUkjIyO6fPmyOjs7q9wqXM8jjzziXVfHjh3T\no48+WuUWodLrr7+uoaEhSYXvzJX+li6q588//9TevXv19ddfe38bjWtp+Qkbp8VeT8atkfnIffv2\n6bfffpMxRrt27dJ9991X7SbBZ3JyUu+8844mJiY0OzurHTt2aOPGjdVuFopOnTqlTz/9VBcuXFAs\nFlNnZ6f27dunnTt3KpvN6o477tCePXsUj8er3dSaFTZGvb29OnjwoOrr69XQ0KA9e/Zo9erV1W5q\nTUun0/riiy/U1dXllX3yySd67733uJaWkbBxeu6553TkyJEbvp5qJmABAAAslZr4iBAAAGApEbAA\nAAAiRsACAACIGAELAAAgYgQsAACAiBGwAAAAIkbAAgAAiBgBCwAAIGL/Brju44fnCLCvAAAAAElF\nTkSuQmCC\n","text/plain":["<Figure size 720x720 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"qA9OoyU9_gVi","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":592},"outputId":"8511d99c-ffde-46d2-d603-1e9459988b7e","executionInfo":{"status":"ok","timestamp":1553939234555,"user_tz":-180,"elapsed":1123,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["# Accuracy\n","f=plt.figure(figsize=(10,10))\n","plt.plot(train_accuracy, label='Training Accuracy')\n","plt.plot(test_accuracy, label='Testing Accuracy')\n","plt.legend()\n","plt.show()"],"execution_count":33,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAlAAAAI/CAYAAAC4QOfKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl8XHd57/HvbBrtGsmSbXmRbdmS\nbBNMmoS2AW4TgrMUuLncEkogkLTlEqCEJCZAEsDYELI5hkAS0jhhM4TWBMhtSy8tISbUcC+khRQw\niXZbI9nyouXMaLSMRjNz7h+25MSL1jNzZs75vP/yS5aOHulYmq9/v+c8P49pmqYAAAAwa167CwAA\nAMg3BCgAAIA5IkABAADMEQEKAABgjghQAAAAc0SAAgAAmCN/Nj5JX18sG59GlZXFMozRrHwuzA/3\nKD9wn/ID9yk/cJ9y3+n3qKambMaPcdQKlN/vs7sEzIB7lB+4T/mB+5QfuE+5bz73yFEBCgAAIBsI\nUAAAAHNEgAIAAJgjAhQAAMAcEaAAAADmiAAFAAAwRwQoAACAOcrKIM1c9PDDD6q1tVmDgwOKx+Na\ntmy5yssrdM89D8z4sT/60Q9VUlKqSy5541n//stf/oLe8Y5rtWzZ8gXV+NGP3qRgMKh77/3Cgq4D\nAACs5doA9ZGPbJF0IgwdONCpm266ddYf++Y3//dp//6WW25bUG2SZBiD6uo6qERiXMPDwyotLV3w\nNQEAgDVcG6DO5YUXfq09e57U6Oiobrppi/7rv36jn/1sr9LptC6++PX6m7+5UV/72i6FQiGtWbNW\nTz/9lDwer8Lhg7r00jfpb/7mRt1004366Ec/oeee26uRkWF1d4d1+PAh3Xzzbbr44tfrySe/qWef\nfUbLli1XMpnUtddepwsuuOgVdezd+4xe//o/0/BwTP/+7z/VW95ytSTpO9/ZrZ/9bK88Hq8++MGb\ndMEFF53xttraZfr0p2/X1772bUnS+973Xn3+8/fr619/XH5/QENDEX3yk9v02c9+WmNjY4rH49qy\n5ePauPE8/ed//kq7dj0qr9erzZuv0MqVq/Tss/+mrVvvkiTdf//n9frX/ze94Q2XZPfGAACQQ+iB\nOovOzg598YuPaP36DZKkRx/9qh5//Jv613/9F42MDL/ifV966UV96lPb9dhj39APfvDdM651/Pgx\n7dz5kG655WP6539+WkNDUT399Pe0a9fX9bGP3aHf/vaFs9bwk5/8WJs3X6HNm6/U3r3PSJJ6err1\ns5/t1a5d39RnPnOXnnnmX8/6tumUl5fr7rsf0MDAgN761rfp4Yd36YMfvEnf+c5umaapL3zhfj3w\nwJf1d3/3Nf361/+h88+/QC+++KLGx8eVTqe1f//v9Cd/8rr5fFsBAHCMnFiBeuqnHfrPluMLvo7P\n51EqZUqSXrt+sf7ysnXzus66dQ0qKCiQJBUWFuqmm26Uz+dTJBLR0NDQK963qWm9CgsLz3mtTZvO\nlyQtXrxYw8PDOnSoR/X1axUMFioYLNSGDa8642N6ew+rr++4Nm06X6lUSvff/3kZhqG2tlZt3Hie\nvF6vVqxYqTvu2Kq9e39yxtuOHOk9Zz0bN574fFVVi7R791f1D//wbU1MTKiwsFCRiKGCggJVVlZK\nknbs+JIk6fWvf4N+9av/q0WLqrVp0/kKBAJz+G4CAOA8ORGgcs1kQDh69Ii++93v6Otf/46Ki4v1\n3vf+5Rnv6/NNfwDhy//eNE2ZpuT1nlr483jO/Jif/OTflEgk9Nd/fZ0kKZVK6rnnnlVVVZXSafO0\n63vPeJvntIsmk8mpP/v9J762p576e1VXL9bWrXeppeUlPfLIl+T1nnktSbrqqrfoySd3q7Z2mS6/\n/Kppv14AANwgJwLUX162bt6rRS9XU1Omvr6YBRWdEIlEVFlZqeLiYrW2tujo0aOamJhY0DVra2t1\n4ECnksmkYrGYWlqaz3ifZ5/9sb785b/T2rUnvie//e0LevzxR7V16+f0zW9+TclkUkNDUT3wwL26\n+eaPnvG2O+/8jAxjUKZpanBwQL29h874HNFoRGvXNkiS/v3fn1MymVRFRUjpdEp9fcdVXV2j22/f\noq1b71JDQ5P6+/sUiRj6wAc+vKCvHwAAJ8iJAJWrGhoaVVRUrA996G/06lefr//xP/5CX/jC/dq0\n6TXzvmZV1SJdfvlVev/7r9eqVWu0ceOrXrFK1d7epoKC4FR4kqTXvOaPNDg4KK/XqyuvfLNuuulG\nmaapD3zgw6qtXXbG28rLy3XRRX+s//W/rte6dQ1qaGg6o46rrnqLPv/5bXruuWf19rf/pZ599hn9\nn//zz7rttjv06U/fLkm67LLNKisrkyS99rV/otHR0TNWtwAAcCOPaZpn7tlYzMpVoelYvQKVKT/6\n0Q91+eVXyefz6frrr9UXv/iwFi9eYndZ52Sapm699cP6+Mfv1IoVKxd0rXy5R27HfcoP3Kf8wH3K\nfaffo5qashk/hhUoGwwMDOjGG29QIFCgK664KqfD05EjvfrUpz6hyy7bvODwBACAU7AChaziHuUH\n7lN+4D7lB+5T7pvPChRzoAAAAOZoxi28dDqtbdu2qb29XYFAQNu3b9fg4KC++MUvyu/3q7i4WDt2\n7FBFRUU26gUAALDdjAFq7969isVi2rNnj7q7u3X33Xerr69PO3fuVH19vR577DF997vf1Y033piN\negEAAGw34xZeV1eXNm3aJEmqq6tTb2+vKioqFIlEJEnRaHRqcjUAAIAbzLgC1djYqN27d+uGG25Q\nOBxWT0+Ptm7dqg9/+MS8oYqKCt12223ZqNVSDz/8oFpbmzU4OKB4PK5ly5arvLxC99zzwKyvceRI\nr6LRiNav36gHH9yhd73rei1dunRBdd1yy4dUVlamz39+x4KuA8zXvx58Vs/8+3PKwvMlWCiPR7Lw\nPiVTptLcd+S4kuRSPXDVrXaXMbun8B588EE9//zzampq0v79+1VeXq6PfOQjuvDCC3X//fertrZW\n119//Tk/PplMye+f/sgTuzz99NNqb2/X7bffPueP/d73vqdkMql3vetdltRy/PhxXXvttRodHdWz\nzz6r0tJSS64LzJZpmvrbf/mUhsaHtapiud3lIItSaVOdhyLyej0q8PN8EXLXipLVuu8v3m93GbOb\nA7Vly5apP2/evFlHjhzRhRdeKEl63etepx/+8IfTfrxhjC6gxNmbz6OisVhco6OJV3zco48+pBdf\n3K90OqVrrnmX3vSmy/XLX/5fff3ru1RQEFR1dbU+/OFb9fDDjygQKFBxcUjf/vY3dMcdW/XjH/9I\n4+NxhcNdOnz4kLZs+YT++I//VN/61tf1058+q+XLlyuRSOg97/lrveY157+ilqeeeloXX/zfNDg4\noP/9v/9FV131FknSt7/9De3b95y8Xp8+9KGP6PzzLzjjbdXVNfrc57bq8ce/KUn6q796t3bseFCP\nPfaICgsLFYvFdPvtn9b27Z9UPB7X+Pi4brvtdq1fv1G/+tX/01e/+pi8Xq+uuOIqLV26TPv2PadP\nfnKbJOmeez6rN77xTbr44jcs4O6cwOO8ua1vdEADo4b+ZMUf6fpGa/5jgMyx8ufpN619euml/Xrb\nG9bo6jesseSaOIHfe9az+vuZkTEGLS0tuvPOOyVJ+/bt08aNG1VdXa2Ojg5J0v79+7Vq1ar51pxz\nXnjh1zKMQX3lK0/oS196VN/4xhNKJBL6wQ++q1tu+Zi+8pUndOmlb1IgENCVV75Z1177br3uda8M\nFiea7B/STTdt0T//89MyDEP/9E9Pa9eub2jLlk/ot7994ayf+yc/+bE2b75Cmzdfqb17n5EkhcNd\n+sUv9mnXrm/qU5/apmee+dezvm06oVCl7rrrPg0O9uttb3u7Hnnkcb3//R/S3//9t5VOp/Xggzv0\nhS88pEcf/ar+4z9+pQsuuFC///3vNDExoVQqpZde+oNe+9o/teYbjJzWZpz4uT5v8ZnH/8DZWsKG\nJGn9KnpagdmYVQ+UaZq65pprFAwGtXPnTh05ckSf/vSnFQgEVFFRoXvuuWdBRTzd8S/6r+P7F3QN\nSfJ5PUqlT+xI/tHiV+sv1r11ztfYv/932r//d7rpphNPFabTKQ0ODuiNb9ys++//vK644s26/PIr\nVVlZdc5rTK4sLV68WMPDwzp0qFvr1jUoGAwqGKxRU9OGMz6mp6db0WhE5523SRMTE9qx425FoxG1\ntrboVa86T16vV3V1q/WJT3xKzzzzb2e87dChnnPWs3HjqyRJlZWL9I1vfFV///ff1vj4uEpLyzQ4\nOKDi4mJVVIQkSTt2fEmS9Kd/erGef/7/qaysXH/0RxfJ72dovRu0TgaoJU3SuM3FIKuauw0VBLyq\nX1ZudylAXpjxVdHr9eq+++57xdtqa2u1Z8+ejBVlp0AgoKuv/p9697tf2dP1lrdcrYsvfr327fuZ\nPv7xW3TPPTvPeY2XHw5smif6SrzeU4t9ZzuQ9yc/+TfF43H91V+9W9KJ+Vs/+9lPVVpaqnT6lW1q\nPp/3jLedfs1kMjn1Z78/IEnas+dJ1dYu07Ztn9cf/rBfTzzxd/J6z7yWdOKw4e997x9UVVWtyy+/\n8pxfK5zDNE21RTpVXlCmZWVL1D8+bHdJyJLo8Lh6+0f0qjVV8vvofwJmIyeWFf5i3VvntVp0Oiv2\nmTduPE9PPPF3uvba9yiRSOixxx7Rrbd+TN/4xhN6xzvepbe97e0aGOhXOHxQXq9XqVRqxmsuW7Zc\nnZ0dSiaTGhqKqq2t5Yz3efbZH+vhh3dp9eoTvQe/+c1/6pvf/KruuGOrvvOd3UqlUjIMQ1/60g59\n6EM3n/G22267U4ODA5Kk/v4+HTly+IzPEY1GtGHDidWoffueUzI5ocrKKo2Pj6u/v19VVVX6xCdu\n1ec+d6/Wr9+o3t5e9ff362//9uaFfEuRJ46OHlcsMayLlpx/1pAP52rpPjGWZgPbd8Cs5USAyiXn\nn3+Bzjtvkz7wgb+WZOrtb3+nJKmmZrFuvvmDKis7MbrhPe+5QX5/QPfe+7mp7a9zqa6u0aWXvkk3\n3niDVq1aow0bXiXfy/6X19LSrNLSsqnwJEkXXHCRduy4W8FgoS677HJ9+MMnnjj44Adv0vLlK854\nW2VlpV7zmvP1vve9V42NTWpoOLOH5c///L/rnnu269lnf6y3v/2d+ulPf6If//hHuu22T+iTn/yY\nPB6PLr/8ShUXl0iSLrroj5VMJnkxdYnJ7bumynU2V4Jsaz7Z/0SAAmaPw4Sz5Ec/+qGuuOLP5fF4\ndP3179RDDz2mRYuq7S7rnNLptG699W91xx1btWyZdY+z5/I9crvH939Lv+v7gz578R3aULeK+5QH\nrPp5uuOxXyo2NqGHbnmDfF628KzG773cN5+n8FiBypK+vuN6//uvVyBQoD//87fmdHg6fPiQtm69\nXZs3X2VpeELuSptptRudqiqsVHXRuR+QgPMMROM6HhnT+euqCU/AHBCgsuSGG96nG254n91lzMry\n5Sv09a9/x+4ykEWHh49oNDmmTTWvsrsUZFlLN+MLgPngvxsA6H9yMfqfgPkhQAFQu9EpSWqsXGtz\nJcgm0zTV0m2otCig5TUldpcD5BUCFOByqXRK7ZEDWlxcrVCwwu5ykEXHI2MaHBrX+rqQvDxtC8wJ\nAQpwue7YIY2nEmpk+8512L4D5o8ABbhc2+T2XYjtO7fh/Dtg/ghQgMu10f/kSqZpqiVsqKK0QEur\niu0uB8g7BCjAxSbSSXVGD2pZyVKVFZTaXQ6yqLd/REOjE9qwqpLTBoB5IEABLtYV7dZEOsn4Ahea\n6n+qY/sOmA8CFOBibSfnPzWwfec6kwcI0/8EzA8BCnCxVqNTHnnUEKq3uxRkUTptqrXbUHVFoWpC\nRXaXA+QlAhTgUolUQl1D3VpZtlzFAV5E3aTn+LBG4klWn4AFIEABLtUZ7VLKTPH0nQvR/wQsHAEK\ncKlT4wtoIHcbDhAGFo4ABbhUq9Ehr8ertRWr7S4FWZRMpdXaE9HSqmJVlgXtLgfIWwQowIXGkmPq\n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\nSUVORK5CYII=\n","text/plain":["<Figure size 720x720 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"fD_DScoJ_xNJ","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":119},"outputId":"41654f64-87b6-4fd5-9096-5f8eb2956717","executionInfo":{"status":"ok","timestamp":1553939547936,"user_tz":-180,"elapsed":784,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["img= test_dataset[40][0].resize_((1,1,28,28))\n","img= Variable(img)\n","label= test_dataset[40][1]\n","\n","model.eval()\n","\n","if torch.cuda.is_available():\n","  model=model.cuda()\n","  img=img.cuda()\n","  \n","output=model(img)\n","print(output)\n","print(output.data)\n","_,predicted=torch.max(output,1)\n","print(\"Prediction is:\",predicted.item())\n","print(\"Actual is:\", label)"],"execution_count":36,"outputs":[{"output_type":"stream","text":["tensor([[-3.5276,  5.8716, -2.6660, -4.8475, -1.5879, -3.5000, -3.9559, -1.1305,\n","         -2.2470, -4.1517]], device='cuda:0', grad_fn=<AddmmBackward>)\n","tensor([[-3.5276,  5.8716, -2.6660, -4.8475, -1.5879, -3.5000, -3.9559, -1.1305,\n","         -2.2470, -4.1517]], device='cuda:0')\n","Prediction is: 1\n","Actual is: 1\n"],"name":"stdout"}]}]}